<?php
#---------------------------------------------------------------
# Clase ldap_Novell
#
# Autor   : Dario Diaz Videla (inddiaz)
# Fecha   : 27.10.2003
# Empresa : Empresas Carozzi S.A.
#
# Autentifica y entrega los datos del usuario en una red novell.
#--------------------------------------------------------------- 
class ldap_novell {
	var $usuario;
	var $password;
	var $nombre;
	var $email;
	var $contexto;
	var $valido;
	
	function autenticacion($cn,$password){
	#------------------------------------------------
	# Funcion que busca el usuario entre los diversos 
	# Servidores de la red Novell
	#------------------------------------------------
		$o[0]="NOS";
		$o[1]="valpo";
		$o[2]="teno";
		$o[3]="osorno";
		$o[4]="RENACA";
		$lRetorno = FALSE;
		$valido = FALSE;
		$ds=@ldap_connect("130.10.4.9");  
		if ($ds) { 
			$r=@ldap_bind($ds,"", "");    
			for ($t=0; $t<=4 ; $t++){
				$dn = "cn=$cn,o=".$o[$t];
		    	$value = "$password";
			    $attr = "userPassword"; 
			    $r=@ldap_compare($ds, $dn, $attr, $value );
			    if ($r === -1) {
					$lRetorno = FALSE;
			    } elseif ($r === TRUE) {
			        $lRetorno = TRUE;
					$this->usuario = $cn;
					$this->password = md5($password);
					$this->contexto = $o[$t];
					$this->valido = TRUE;
					$t=6;
			    } elseif ($r === FALSE) {
			        $lRetorno = FALSE;
			    }
			}
			if ($lRetorno === True) {
				$this->datos( $ds, $this->usuario, $this->contexto);
			}
		    ldap_close($ds);
		}
		return ($lRetorno);
	}
	
	function datos($ds, $usuario,$contexto){
	#---------------------------------------------------------------------------
	# Funcion que carga la informcaion del Nombre y el Email en las variables de
	# la Clase.
	#---------------------------------------------------------------------------
	$lRetorno = FALSE;
	if ($ds) { 
	    $sr=ldap_search($ds,"cn=$usuario, o=$contexto", "givenname=*");  
	    $info = ldap_get_entries($ds, $sr);
	    for ($i=0; $i<$info["count"]; $i++) {
			$this->nombre = $info[$i]["givenname"][0]. " ". $info[$i]["sn"][0];
			$this->email = $info[$i]["mail"][0];
			$lRetorno = TRUE;
	    }
	} else {
	    $lRetorno=FALSE;
	}
	return ($lRetorno);
    }
}
?>